Streaming of media over a network from a content server to a media device has been widely adopted for media consumption. Two network protocols used for media streaming include the user datagram protocol Internet protocol (“UDP IP”) and the transfer control protocol (“TCP”) IP. The UDP IP is often used for media streaming for relatively reliable networks, such as in-home streaming over wired connections. The TCP IP is often used for streaming over less reliable networks.
The HTTP-based live streaming protocol, used with the TCP IP, allows a content server to publish variant playlist files to media devices. A variant playlist file identifies multiple sets video streams for a media program, such as a movie, a television program, etc., where each set of video streams has unique encoding parameters (e.g., bit rates, resolutions, etc.) for the media program. The media devices may dynamically switch between the sets of video streams identified in the variant playlist file as the sets of video streams are transmitted from the content server to the media devices. The media devices may choose to receive an initial set of video streams identified in the variant playlist file based on initial network conditions, initial buffer conditions, etc. For example, the media devices may choose to receive a set of high definition video streams identified in the variant playlist file if the initial network conditions, the initial buffer conditions, etc., support the streaming of the high definition set of video streams. If the initial network conditions degrade or if the initial buffer conditions degrade, etc., then the media devices may choose to receive a set of low definition video streams identified in the variant playlist file. That is, the media device may dynamically choose different sets of video streams to receive from the content server where the different sets of video streams have different encoding parameters.
Selection and transmission of the sets of video streams are driven by the media devices. In response to a selection of a set of video streams identified in the variant playlist file, the content server passively transmits the set of video streams to the media device. The media device may have limited information about the overall system conditions (e.g., network conditions to other media devices) and hence might not select a set of video streams that is suitable for the current media device's network conditions. Further, some types of media devices select the highest resolution and highest bit-rate sets of video streams to receive. Typically the content server services multiple media devices, transmitting multiple sets of video streams to the media devices. If a media device requests a set of video streams with high resolution and high bit rate, then a large portion of content server resources or network bandwidth may have to be allocated in order to service that media device. Consequently, the other media devices serviced by the content server may experience degraded performance such as intermittent interruptions in the transmission of video streams.